let express = require('express');   //引入express
const { doLog } = require('./log.js') // 日志文件
let Mock = require('mockjs');       //引入mock
let app = express();        //实例化express
// body-parser 应该不需要了 原本是express的中间体，解析请求内容用的。
// var bodyParser = require("body-parser");
// app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.json()) // post请求需要配置解析类型

function writeLog (time,req,send) {
	doLog(`${time}[start]==> ${req.method} -- ${req.url} -- 接受参数 ==> ${JSON.stringify(req.body)}-- 返回数据 ==> ${JSON.stringify(send)} -- ${time}[end] `)
}
app.all('*', function (req, res, next) {
    // Request
     // req.baseUrl 基础路由地址
    // req.body post发送的数据解析出来的对象
    // req.cookies 客户端发送的cookies数据
    // req.hostname 主机地址 去掉端口号
    // req.ip 查看客户端的ip地址
    // req.ips 代理的IP地址
    // req.originalUrl 对req.url的一个备份
    // req.params 在使用/:id/:name 匹配params
    // req.path 包含请求URL的路径部分
    // req.protocol http 或https协议
    // req.query 查询字符串解析出来的对象 username=zhangsan&password=123 { username:zhangsan }
    // req.route 当前匹配的路由 正则表达式
    // req.params 获取路由匹配的参数
    // req.get 获取请求header里的参数
    // req.is 判断请求的是什么类型的文件
    // req.param(key名称) 用来获取某一个路由匹配的参数

    //Response
     // res.headersSent 查看http响应是否响应了http头
    // res.append(名称,value) 追加http响应头
    // res.attachment(文件路径) 响应文件请求
    // res.download(文件的path路径) 跟attachment类似
    // res.cookie() 设置cookie
    // res.redirect(301,'/api/aes') 重定向
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("Content-Type", "application/json;charset=utf-8");
    res.header('Access-Control-Allow-Credentials', true)
    next();
});
app.get('/test/:UID',function(req, res){
    console.log('获得参数====get====>',req.query,req.params)
    let time = new Date().toLocaleString()
    let result = Mock.mock({
        'status': 200,
        'dataSource|1-9':[{
            'key|+1': 1,
            'mockTitle|1':['肆无忌惮'],
            'mockContent|1': ['角色精湛主题略荒诞', '理由太短 是让人不安', '疑信参半 却无比期盼', '你的惯犯 圆满', '别让纠缠 显得 孤单'],
            'mockAction|1': ['下载', '试听', '喜欢']
        }]
    })
    res.json(result)
	writeLog(time,req,result)
})
app.post("/send/:UID", function (req, res) {
    console.log('获得参数====post====>',req.body,req.params)
    let time = new Date().toLocaleString()
    var result = { code: 200, msg: "post请求成功" };
    res.send(result);
	writeLog(time,req,result)
});


app.listen('8888', () => {
    console.log('监听端口 8888')
})